﻿/**
 *
 * @file FITKPhyscisPropertyGeneralLaminate.h
 * @brief 自由阻尼板合板类定义
 * @author lizhiyuan(liuzhiyuan(liuzhiyuan@diso.com))
 * @date 2024-10-18
 *
 */
#ifndef FITK_PHY_SCISPROPERTY_GENERAL_LAMINATE__H__
#define FITK_PHY_SCISPROPERTY_GENERAL_LAMINATE__H__

#include "FITKAcousticsAbsShellPhysicsProp.h"
#include "FITKPhyscisPropertyGeneralLaminateIsoLayer.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"


namespace Acoustics
{

    /**
    * @brief 自由阻尼板合板数据结构定义
    * @author liuzhiyuan(liuzhiyuan@diso.com)
    * @date 2024-10-15
    */
    class FITKAcousticsPhysicsAPI FITKPhyscisPropertyGeneralLaminate : public FITKAcousticsAbsShellPhysicsProp,
        public Core::FITKAbstractDataManager<FITKPhyscisPropertyGeneralLaminateIsoLayer>
    {
        FITKCLASS(Acoustics, FITKPhyscisPropertyGeneralLaminate);
        Q_OBJECT
    public:
        /**
         * @brief Construct a new Physcis Property General Laminate object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        explicit FITKPhyscisPropertyGeneralLaminate();
        /**
         * @brief Destroy the Physcis Property General Laminate object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        virtual ~FITKPhyscisPropertyGeneralLaminate() = default;

        /**
         * @brief 获取物理属性类型
         * @return AcousticsPhyscisPropType
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-06
         */
        virtual AcousticsPhyscisPropType getPhysicsPropType() override;
        /**
         * @brief 获取层数
         * @return int 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        int getLayerCount();
        /**
         * @brief 获取总厚度
         * @return double 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        double getTotalThickness();
        /**
         * @brief    获取板物理属性的总体厚度抽象接口
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-12
         */
        virtual double getShellThickness() override;
        /**
         * @brief    更新默认颜色
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-20
         */
        virtual void updateDefaultColor() override;
    };
}

#endif // FITKPHYSCISPROPERTYGENERAL_H
